// A fully functional OPC UA demo server running in a console host. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-ConnectivityStudio/Latest/examples.html . // OPC client, server and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-ConnectivityStudio-CSharp . // Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own // a commercial license in order to use Online Forums, and we reply to every post. using System; using System.Threading; using Microsoft.Extensions.DependencyInjection; using OpcLabs.EasyOpc.UA; using OpcLabs.EasyOpc.UA.Services; using UAServerDemoLibrary; namespace UAServerConsoleDemo { internal class Program { static void Main(string[] args) { Console.WriteLine("OPC Wizard Server Console Demo"); Console.WriteLine(); // Enable the console interaction by the server. EasyUAServer.SharedParameters.PluginSetups.FindName("UAConsoleInteraction").Enabled = true; // Instantiate the server object. // By default, the server will run on endpoint URL "opc.tcp://localhost:48040/". using (var server = new EasyUAServer()) { // Define various nodes. ConsoleNodes.AddToParent(server.Objects); DataNodes.AddToParent(server.Objects); DemoNodes.AddToParent(server.Objects); // Hook events to the server object. server.EndpointStateChanged += (sender, eventArgs) => Console.WriteLine($"{nameof(server.EndpointStateChanged)}: {eventArgs}"); server.Starting += (sender, eventArgs) => Console.WriteLine(nameof(server.Starting)); server.Stopped += (sender, eventArgs) => Console.WriteLine(nameof(server.Stopped)); // Obtain the server connection monitoring service. IEasyUAServerConnectionMonitoring serverConnectionMonitoring = server.GetService<IEasyUAServerConnectionMonitoring>(); if (!(serverConnectionMonitoring is null)) { // Hook events to the connection monitoring service. serverConnectionMonitoring.ClientSessionConnected += (sender, eventArgs) => Console.WriteLine($"{nameof(serverConnectionMonitoring.ClientSessionConnected)}: {eventArgs}"); serverConnectionMonitoring.ClientSessionDisconnected += (sender, eventArgs) => Console.WriteLine($"{nameof(serverConnectionMonitoring.ClientSessionDisconnected)}: {eventArgs}"); } // Start the server. server.Start(); // Let the user decide when to stop. var cancelled = new ManualResetEvent(initialState: false); Console.CancelKeyPress += (sender, eventArgs) => { // Signal the main thread to exit. cancelled.Set(); // Prevent the process from terminating immediately. eventArgs.Cancel = true; }; Console.WriteLine("Press Ctrl+C to stop the server..."); cancelled.WaitOne(); // Stop the server. server.Stop(); } } } }
' A fully functional OPC UA demo server running in a console host. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-ConnectivityStudio/Latest/examples.html . ' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-ConnectivityStudio-VBNET . ' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own ' a commercial license in order to use Online Forums, and we reply to every post. Imports System Imports System.Threading Imports Microsoft.Extensions.DependencyInjection Imports OpcLabs.BaseLib Imports OpcLabs.EasyOpc.UA Imports OpcLabs.EasyOpc.UA.Services Imports UAServerDemoLibrary Namespace Global.UAServerConsoleDemo Module Program Sub Main(args As String()) Console.WriteLine("OPC Wizard Server Console Demo") Console.WriteLine("") ' Enable the console interaction by the server. EasyUAServer.SharedParameters.PluginSetups.FindName("UAConsoleInteraction").Enabled = True ' Instantiate the server object. ' By default, the server will run on endpoint URL "opc.tcp://localhost:48040/". Using server = New EasyUAServer() ' Define various nodes. ConsoleNodes.AddToParent(server.Objects) DataNodes.AddToParent(server.Objects) DemoNodes.AddToParent(server.Objects) ' Hook events to the server object. AddHandler server.EndpointStateChanged, Sub(sender, EventArgs) _ Console.WriteLine($"{NameOf(server.EndpointStateChanged)}: {EventArgs}") AddHandler server.Starting, Sub(sender, EventArgs) Console.WriteLine(NameOf(server.Starting)) AddHandler server.Stopped, Sub(sender, EventArgs) Console.WriteLine(NameOf(server.Stopped)) ' Obtain the server connection monitoring service. Dim serverConnectionMonitoring As IEasyUAServerConnectionMonitoring = server.GetService(Of IEasyUAServerConnectionMonitoring)() If Not (serverConnectionMonitoring Is Nothing) Then ' Hook events to the connection monitoring service. AddHandler serverConnectionMonitoring.ClientSessionConnected, Sub(sender, EventArgs) _ Console.WriteLine($"{NameOf(serverConnectionMonitoring.ClientSessionConnected)}: {EventArgs}") AddHandler serverConnectionMonitoring.ClientSessionDisconnected, Sub(sender, EventArgs) _ Console.WriteLine($"{NameOf(serverConnectionMonitoring.ClientSessionDisconnected)}: {EventArgs}") End If ' Start the server. server.Start() ' Let the user decide when to stop. Dim cancelled = New ManualResetEvent(initialState:=False) AddHandler Console.CancelKeyPress, Sub(sender, EventArgs) _ ' Signal the main thread to exit. cancelled.Set() ' Prevent the process from terminating immediately. EventArgs.Cancel = True End Sub Console.WriteLine("Press Ctrl+C to stop the server...") cancelled.WaitOne() ' Stop the server. server.Stop() End Using End Sub End Module End Namespace
Copyright © 2004-2025 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Documentation Home, Send Feedback. Resources: Knowledge Base, Product Downloads. Technical support: Online Forums, FAQ.Missing some example? Ask us for it on our Online Forums! You do not have to own a commercial license in order to use Online Forums, and we reply to every post.